package demo02;

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

/**
 * 第二题: 通过代码, 完成如下需求:
 * 1. 自定义一个人类，给出成员变量name和age.
 * 2. 使用TreeSet集合存储5个人类对象并遍历.
 * 3. 最后在控制台输出人类对象的成员变量值。
 * //格式为: 姓名: 张三, 年龄: 23
 * 4. 通过两种方式遍历.
 * //提示: 普通迭代器, 增强for.
 * 5. 要求: 按照人的年龄降序排列.
 * //提示: 分别通过自然排序, 比较器接口排序实现.
 */
public class Test {
    public static void main(String[] args) {
        //使用TreeSet集合存储学生对象 自然排序
        TreeSet<Person> hs = new TreeSet<>();
        hs.add(new Person("张三", 40));
        hs.add(new Person("张四", 26));
        hs.add(new Person("张五", 30));
        hs.add(new Person("张四", 56));
        hs.add(new Person("张五", 40));

        //提示: 普通迭代器
        Iterator<Person> it = hs.iterator();
        while (it.hasNext())
            System.out.println(it.next());

        System.out.println("-----------------------------");
        //增强for
        for (Person p : hs)
            System.out.println(p);

        System.out.println("-----------------------------");
        //比较器接口排序
        TreeSet<Person> hs2 = new TreeSet<>(new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                int num1 = o2.getAge() - o1.getAge();
                int num2 = num1 == 0 ? o2.getName().compareTo(o1.getName()) : num1;
                return num2;
            }
        });
        hs2.add(new Person("张三", 40));
        hs2.add(new Person("张四", 26));
        hs2.add(new Person("张五", 30));
        hs2.add(new Person("张四", 56));
        hs2.add(new Person("张五", 40));

        //提示: 普通迭代器
        Iterator<Person> it2 = hs.iterator();
        while (it2.hasNext())
            System.out.println(it2.next());

        System.out.println("-----------------------------");
        //增强for
        for (Person p : hs2)
            System.out.println(p);
    }
}
